﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using webappdotnet;
    public partial class Oefeningen_maken : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.IsInRole("Leerling"))
            {
                Response.Redirect("Default.aspx");
            }
            if (getVooruitgang() <= 0)
            {
                Response.Redirect("Oefeningen_reedsGemaakt.aspx");
            }
            SqlDataSource1.SelectParameters["llnID"].DefaultValue = "" + Queries.getLeerlingIDByNaam(User.Identity.Name);
            SqlDataSource2.SelectParameters["llnID"].DefaultValue = "" + Queries.getLeerlingIDByNaam(User.Identity.Name);
            IsLaatsteLeerling();
            
        }

        protected int getVooruitgang()
        {
            return webappdotnet.Queries.GetVooruitgangOpgaves(Convert.ToInt32(Request.QueryString["id"]), Queries.getLeerlingIDByNaam(User.Identity.Name));


        }
        protected int getTotaal()
        {
            return webappdotnet.Queries.GetTotaalOpgaves(Convert.ToInt32(Request.QueryString["id"]));
        }
        protected void controleerStatus()
        {

            //DataClassesDataContext context = new DataClassesDataContext();

            //var query = context.ExecuteQuery<int>("SELECT COUNT(opgaveTekst) AS Expr1 FROM OpdrachtDetail WHERE (opdrachtID = " + Request.QueryString["id"] + ") AND (opdrachtDetailID NOT IN (SELECT opdrachtDetailID FROM LeerlingOpdrachtDetail AS LeerlingOpdrachtDetail_1 WHERE (OpdrachtDetail.opdrachtID = " + Request.QueryString["id"] + ")))");
            //if (query.First() <= 0)
            if (IsLaatsteLeerling())
            {
                Queries.SetStatus(true, Int32.Parse(Request.QueryString["id"]));
            }

        }

        protected void Button1_Click1(object sender, EventArgs e)
        {
            int opdrachtid = Int32.Parse(Request.QueryString["id"]);
            int llnid = Queries.getLeerlingIDByNaam(User.Identity.Name);
            bool fout = true;

            
            if (GridView1.Rows[0].Cells[0].Text.ToString().ToLower().ToString() == TextBox1.Text.ToString().ToLower().ToString())
            {
                fout = false;
            }
            int opdrachtdetailid = Int32.Parse(GridView1.Rows[0].Cells[1].Text.ToString());
            //Response.Write(GridView1.Rows[0].Cells[1].ToString());
            controleerStatus();
            Queries.voegLeerlingOpdrachtDetailToe(opdrachtdetailid, llnid, fout, TextBox1.Text);
            Response.Redirect(Request.Url.ToString());
        }

        public bool IsLaatsteLeerling()
        {
            int aftrekken = 1;
            if (webappdotnet.Queries.HeeftAlGeantwoord(Convert.ToInt32(Request.QueryString["id"]), Queries.getLeerlingIDByNaam(User.Identity.Name))) { 
              //Als een leerling reeds geantwoord heeft op een oefening moeten we niks aftrekken
                aftrekken = 0;
            }
            if (webappdotnet.Queries.AantalLeerlingenVoorOpdracht(Convert.ToInt32(Request.QueryString["id"])) == 1 || ((webappdotnet.Queries.AantalLeerlingenVoorOpdracht(Convert.ToInt32(Request.QueryString["id"]))-aftrekken) == webappdotnet.Queries.AantalLeerlingenDieOpdrachtInvulden(Convert.ToInt32(Request.QueryString["id"]))))
            {
                //Deze Leerling is de laatste die moet invullen
                //Nu kijken hoe het met de vooruitgang zit

                if ((getTotaal() - getVooruitgang()) == (getTotaal()-1))
                {
                    //Response.Write("ik ga de status zetten");
                    return true;
                }
            }
            return false;
        }
}
